home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 19
/
Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso
/
Aminet
/
gfx
/
board
/
rtgmasdev.lha
/
demos
/
flamme
/
flamme.asm
< prev
next >
Wrap
Assembly Source File
|
1997-03-24
|
10KB
|
510 lines
incdir "include:"
include "rtgmaster/rtgmaster.i"
include "rtgmaster/rtgsublibs.i"
include "rtgmaster/rtgmaster_lib.i"
include "rtgmaster/rtgc2p.i"
include "exec/memory.i"
mc68020
start:
move.l $4,a6
movem.l d0-d7/a0-a6,-(sp)
movem.l (sp)+,d0-d7/a0-a6
lea rtgname,a1
moveq #0,d0
jsr -408(a6)
move.l d0,rtgbase
move.l #315392,d0
move.l #MEMF_FAST+MEMF_CLEAR,d1
jsr -198(a6)
move.l d0,flames
add.l #4096,d0
move.l d0,new_flames
add.l #4096,d0
move.l d0,MapB
move.l #56,d0
move.l #MEMF_PUBLIC+MEMF_CLEAR,d1
jsr -198(a6)
move.l d0,timereq
add.l #40,d0
move.l d0,t1
add.l #8,d0
move.l d0,t2
move.l #$FFFFFFFF,d0
jsr -330(a6)
move.l d0,signal
lea timername,a0
move.l #2,d0
move.l timereq,a1
move.l #0,d1
jsr -444(a6)
move.l timereq,a0
add.l #20,a0
move.l (a0),timerbase
move.l rtgbase,a6
lea srtags,a0
jsr _LVORtgScreenModeReq(a6)
move.l d0,smode
move.l smode,a0
lea sctags,a1
jsr _LVOOpenRtgScreen(a6)
move.l d0,rtgscreen
move.l rtgscreen,a0
lea tags,a1
jsr _LVOGetRtgScreenData(a6)
cmp.l #grd_PLANAR,pixel
bne chunky
move.l rtgscreen,a0
lea table,a1
jsr _LVOLoadRGBRtg(a6)
move.l rtgscreen,a0
jsr _LVOLockRtgScreen(a6)
move.l d0,MapA
mainloop:
move.l a6,-(sp)
move.l timerbase,a6
move.l t1,a0
jsr -60(a6)
move.l (sp)+,a6
move.l flames,a0
move.l a0,a1
add.l #64,a1
add.l #96,a0
move #41*16,d0
sub #1,d0
copyloop1:
move.w (a0)+,(a1)+
dbra d0,copyloop1
move.l a0,a2
move #3,d1
add.l #6,a2
puthotspots:
move.l a2,a0
move.l #20,d0
jsr Random
add.l d0,a0
move.l #190,d0
jsr Random2
move.w d0,(a0)
dbra d1,puthotspots
move.w #1,x
move.w #1,y
flameloop:
move.l flames,a0
move.l new_flames,a1
sub.l d0,d0
move.w x,d0
add.l d0,a0
add.l d0,a1
sub.l d0,d0
move.w y,d0
lsl.w #5,d0
add.l d0,a0
add.l d0,a1
sub.l #1,a0
sub.l d3,d3
move.b (a0),d3 ; (x-1/y)
add.l #2,a0
add.b (a0),d3 ; (x+1/y)
sub.l #32,a0
add.b (a0),d3 ; (x+1/y-1)
sub.l #1,a0
add.b (a0),d3 ; (x/y-1)
sub.l #1,a0
add.b (a0),d3 ; (x-1/y-1)
add.l #64,a0
add.b (a0),d3 ; (x-1/y+1)
add.l #1,a0
add.b (a0),d3 ; (x/y+1)
add.l #1,a0
add.b (a0),d3 ; (x+1/y+1)
lsr.b #3,d3
move.b d3,(a1)
add.w #1,x
cmp #32,x
bne flameloop
move.w #1,x
add.w #1,y
cmp #44,y
bne flameloop
move.l new_flames,a0
move.l flames,a1
move #44,d0
sub #1,d0
copyloop2:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbra d0,copyloop2
teste:
sub.l d5,d5
move.l Width,d6
move.l d6,d7
mulu.l #40,d6
mulu.l Height,d7
plotloopouter:
move.l #0,d4
plotloop:
move.l flames,a0
move.l MapB,a1
add.l d5,a1
add d4,a1
move #39,d2
add.l #96,a0
plotit:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
add.l Width,a1
sub.l #32,a1
dbra d2,plotit
add.l #32,d4
cmp.l Width,d4
bls plotloop
add.l d6,d5
cmp.l d7,d5
bls plotloopouter
move.l ticks,d0
move.l MapB,a0
jsr _DrawMeter
move.l rtgscreen,a0
move.l MapA,a1
move.l MapB,a2
move.l signal,d0
move.l #0,d1
move.l #0,d2
move.l Width,d3
move.l Height,d4
move.l #c2p_Selected,d5
jsr _LVOCallRtgC2P(a6)
jsr stopclock
move.l d0,ticks
btst #6,$bfe001
bne mainloop
exit:
move.l rtgscreen,a0
jsr _LVOUnlockRtgScreen(a6)
move.l rtgscreen,a0
jsr _LVOCloseRtgScreen(a6)
move.l smode,a0
jsr _LVOFreeRtgScreenModeReq(a6)
move.l rtgbase,a1
move.l $4,a6
jsr -414(a6)
move.l signal,d0
jsr -336(a6)
move.l flames,a1
move.l #315392,d0
move.l $4,a6
jsr -210(a6)
move.l timereq,a1
jsr -450(a6)
move.l timereq,a1
move.l #56,d0
jsr -210(a6)
lea text,a0
add.l #12,a0
move.l ticks2,d0
divu.l ticks3,d0
move.l d0,ticks
move.l ticks,d0
divu.l #1000,d0
move.l d0,d3
mulu.l #1000,d3
add.l #'0',d0
move.l d0,(a0)+
move.l ticks,d0
sub.l d3,d0
divu.l #100,d0
move.l d0,d1
mulu.l #100,d1
add.l #'0',d0
move.b d0,(a0)+
move.l ticks,d0
sub.l d1,d0
sub.l d3,d0
divu.l #10,d0
move.l d0,d2
mulu.l #10,d2
add.l #'0',d0
move.b d0,(a0)+
move.l ticks,d0
sub.l d1,d0
sub.l d2,d0
sub.l d3,d0
divu.l #1,d0
add.l #'0',d0
move.b d0,(a0)+
lea dosname,a1
moveq #0,d0
jsr -408(a6)
move.l d0,a6
jsr -60(a6)
move.l d0,d1
move.l d0,d5
move.l #text,d2
move.l #texte-text,d3
jsr -48(a6)
move.l d5,d1
move.l #text2,d2
move.l #texte2-text2,d3
jsr -48(a6)
move.l a6,a1
move.l $4,a6
jsr -414(a6)
rts
ticks: dc.l 0
ticks2: dc.l 0
ticks3: dc.l 0
_DrawMeter:
move.l ticks,d0
dl:
move.w #$0700,(a0)+
dbra d0,dl
rts
stopclock:
move.l a6,-(sp)
move.l timerbase,a6
move.l t2,a0
jsr -60(a6)
move.l d0,d1
move.l t2,a0
move.l t1,a1
move.l 4(a0),d0
sub.l 4(a1),d0
cmp.l #0,d0
beq raus
divu.l d0,d1
move.l d1,d0
add.l d0,ticks2
add.l #1,ticks3
raus:
move.l (sp)+,a6
rts
t1: dc.l 0
t2: dc.l 0
timereq: dc.l 0
chunky:
move.l rtgscreen,a0
lea tags,a1
jsr _LVOGetRtgScreenData(a6)
move.l rtgscreen,a0
lea table,a1
jsr _LVOLoadRGBRtg(a6)
move.l rtgscreen,a0
jsr _LVOLockRtgScreen(a6)
move.l d0,MapA
mainloop2:
move.l a6,-(sp)
move.l timerbase,a6
move.l t1,a0
jsr -60(a6)
move.l (sp)+,a6
move.l flames,a0
move.l a0,a1
add.l #64,a1
add.l #96,a0
move #41*16,d0
sub #1,d0
copyloop12:
move.w (a0)+,(a1)+
dbra d0,copyloop12
move.l a0,a2
move #3,d1
add.l #6,a2
puthotspots2:
move.l a2,a0
move.l #20,d0
jsr Random
add.l d0,a0
move.l #190,d0
jsr Random2
move.w d0,(a0)
dbra d1,puthotspots2
move.w #1,x
move.w #1,y
flameloop2:
move.l flames,a0
move.l new_flames,a1
sub.l d0,d0
move.w x,d0
add.l d0,a0
add.l d0,a1
sub.l d0,d0
move.w y,d0
lsl.w #5,d0
add.l d0,a0
add.l d0,a1
sub.l #1,a0
sub.l d3,d3
move.b (a0),d3 ; (x-1/y)
add.l #2,a0
add.b (a0),d3 ; (x+1/y)
sub.l #32,a0
add.b (a0),d3 ; (x+1/y-1)
sub.l #1,a0
add.b (a0),d3 ; (x/y-1)
sub.l #1,a0
add.b (a0),d3 ; (x-1/y-1)
add.l #64,a0
add.b (a0),d3 ; (x-1/y+1)
add.l #1,a0
add.b (a0),d3 ; (x/y+1)
add.l #1,a0
add.b (a0),d3 ; (x+1/y+1)
lsr.b #3,d3
move.b d3,(a1)
add.w #1,x
cmp #32,x
bne flameloop2
move.w #1,x
add.w #1,y
cmp #44,y
bne flameloop2
move.l new_flames,a0
move.l flames,a1
move #44,d0
sub #1,d0
copyloop22:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
dbra d0,copyloop22
teste2:
sub.l d5,d5
move.l Width,d6
move.l d6,d7
mulu.l #40,d6
mulu.l Height,d7
plotloopouter2:
move.l #0,d4
plotloop2:
move.l flames,a0
move.l MapA,a1
add.l d5,a1
add d4,a1
move #39,d2
add.l #96,a0
plotit2:
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
add.l Width,a1
sub.l #32,a1
dbra d2,plotit2
add.l #32,d4
cmp.l Width,d4
bls plotloop2
add.l d6,d5
cmp.l d7,d5
bls plotloopouter2
jsr stopclock
move.l d0,ticks
move.l MapA,a0
jsr _DrawMeter
btst #6,$bfe001
bne mainloop2
bra exit
Random:
clr.l d0
move.b $dff006,d0
ext.w d0
ext.l d0
and.l #31,d0
cmp.l #20,d0
bge Random
rts
Random2:
clr.l d0
move.b $dff006,d0
ext.w d0
ext.l d0
cmp.l #190,d0
bge Random
rts
rtgname: dc.b 'rtgmaster.library',0
timername: dc.b 'timer.device',0
dosname: dc.b 'dos.library',0
text: dc.b 'fps value : ',0
texte:
text2: dc.b 10,13
texte2:
even
timerbase: dc.l 0
rtgbase:
dc.l 0
smode:
dc.l 0
MapA:
dc.l 0
srtags:
dc.l smr_MinWidth,320
dc.l smr_MaxWidth,1024
dc.l smr_MinHeight,200
dc.l smr_MaxHeight,768
dc.l smr_ChunkySupport,512
dc.l smr_PlanarSupport,-1
dc.l 0,0
sctags:
dc.l 0,0
tags:
dc.l grd_Width
Width:
dc.l 0
dc.l grd_Height
Height:
dc.l 0
dc.l grd_PixelLayout
pixel:
dc.l 0,0,0
rtgscreen:
dc.l 0
signal:
dc.l 0
table:
dc.w 40,0
tablemain:
dc.l 0,0,0,$20202020,0,0,$40404040,0,0,$60606060,0,0,$80808080,0,0,$A0A0A0A0,0,0,$C0C0C0C0,0,0,$E0E0E0E0,0,0
dc.l $F0F0F0F0,0,0,$F0F0F0F0,$10101010,0,$F0F0F0F0,$20202020,0,$F0F0F0F0,$30303030,0,$F0F0F0F0,$40404040,0,$F0F0F0F0,$50505050,0,$F0F0F0F0,$60606060,0,$F0F0F0F0,$70707070,0
dc.l $F0F0F0F0,$80808080,0,$F0F0F0F0,$90909090,0,$F0F0F0F0,$A0A0A0A0,0,$F0F0F0F0,$B0B0B0B0,0,$F0F0F0F0,$C0C0C0C0,0,$F0F0F0F0,$D0D0D0D0,0,$F0F0F0F0,$E0E0E0E0,0,$F0F0F0F0,$F0F0F0F0,0
dc.l $F0F0F0F0,$F0F0F0F0,0,$F0F0F0F0,$F0F0F0F0,$10101010,$F0F0F0F0,$F0F0F0F0,$20202020,$F0F0F0F0,$F0F0F0F0,$30303030,$F0F0F0F0,$F0F0F0F0,$40404040,$F0F0F0F0,$F0F0F0F0,$50505050,$F0F0F0F0,$F0F0F0F0,$60606060,$F0F0F0F0,$F0F0F0F0,$70707070
dc.l $F0F0F0F0,$F0F0F0F0,$80808080,$F0F0F0F0,$F0F0F0F0,$90909090,$F0F0F0F0,$F0F0F0F0,$A0A0A0A0,$F0F0F0F0,$F0F0F0F0,$B0B0B0B0,$F0F0F0F0,$F0F0F0F0,$C0C0C0C0,$F0F0F0F0,$F0F0F0F0,$D0D0D0D0,$F0F0F0F0,$F0F0F0F0,$E0E0E0E0,$F0F0F0F0,$F0F0F0F0,$F0F0F0F0
dc.w 0
flames:
dc.l 0
MapB:
dc.l 0
new_flames:
dc.l 0
x:
dc.w 0
y:
dc.w 0
END